/*
视频教程的典型算法:

	1 最大公约数
	2 量水问题
	3 求圆周率
*/
package week01

import (
	"fmt"
	"math/rand"
)

// 最大公约数
func GetGCD() {
	x, y := 0, 0
	fmt.Scanf("%d%d", &x, &y)
	m := min(x, y) // m取x,y 中较小的
	for x%m != 0 || y%m != 0 {
		m--
	}
	fmt.Println("gcd=", m)
}

// 功能: 取x,y中较小的
func min(x, y int) (value int) {
	value = y
	if x < y {
		value = x
	}
	return
}

// 量水问题
func MeasureWater() {
	// 见例题
}

/*
求PI

	@description: 单位圆的面积=在圆中的随机落点数和在正方形中的随机落点数之比
	@param n[int] 总点数
*/
func GetPi(n int) {
	var x float64
	var y float64

	in_circle := 0
	for i := 1; i < n; i++ {
		x, y = rand.Float64(), rand.Float64() // x,y 是 [0,1) 上随机

		a, b := x-0.5, y-0.5
		if a*a+b*b < 0.5*0.5 {
			in_circle++ // 利用距离 d^2=a^2+b^2, 确认点在园内
		}
	}
	pi := 4 * (float64)(in_circle) / (float64)(n)
	fmt.Printf("pi=%.5f\n", pi)
}
